//-------------------------------------------------------------------
//	Copyright (c) 2010-2012  Zhirnov Andrey
//	This file is part of the "UXGEN" project.
//	See copyright notice in "Engine.h".
//-------------------------------------------------------------------

#ifndef _UX_ALL_TYPES_H
#define _UX_ALL_TYPES_H

#include "../Defines/Defines.h"

struct TGLContext;


namespace Engine
{

	namespace UXTypes
	{
	}

	namespace UXTypesExt
	{
		class CInput;
		class IThreadOp;
		class IThread;
		class CThreadManager;
		class IWindowUpdater;
		class IWindowEventListener;
	}

	namespace UXMetaTypes
	{
	}

	namespace UXParser
	{
		class CConfig;
	}

	namespace UXLogger
	{
		class ILogger;
	}

	namespace UXFileSystem
	{
		class CFileSystem;
	}

	namespace GLShell
	{
		class GLStateManager;
		class GLObjectManager;
		class GLBatchRender;
		class GLMatrixStack;
	}

	namespace ALShell
	{
		class ALSoundSystem;
	}

	namespace CLShell
	{
		class CLDevice;
	}

	namespace CoreSystems
	{
		// all engine systems
		class CCore;
		class IWindow;
		class CRender;
		class CRenderSystem;
		//class CObjectManager;
		class CResourceManager;
	}

	namespace RenderUtils
	{
		// render types
		class CViewport;
		class IRenderQueue;
		class IRenderObject;
		class IRenderTechnique;
		class CUniformManager;
		class CSamplerManager;
		class COfflineRender;
		class CVideoRender;
	}

	namespace Resources
	{
		// all resources
		class CResource;
	}

	namespace Scene
	{
		class CSceneManager;
		class CSceneObjectFactory;

		class CMeshModelRenderComp;
		class CModelRangeRenderComp;
		class CMultiMeshModelRenderComp;
	}

	namespace GUI
	{
		// all GUI objects
		class CWidget;
		class CScreen;
		class CBaseStyle;
		class CGUISystem;
		class CGUIObjectFactory;
	}

	namespace Loaders
	{
		// all Resource Loaders
	}

	struct TMetaDataInitializer;

	using namespace CoreSystems;
	using namespace Resources;
	using namespace RenderUtils;
	using namespace GUI;
	using namespace Scene;
	
	
	using namespace UXLogger;
	using namespace UXMetaTypes;
	using namespace UXFileSystem;
	using namespace UXTypesExt;
	using namespace GLShell;
	using namespace ALShell;
	using namespace CLShell;


	//using namespace UXParser;

//-------------------------------------------------------------------

}	// Engine

#endif	// _UX_ALL_TYPES_H